In [1]:
import pandas as pd
import numpy as np
import yfinance as yf
import random
from matplotlib import pyplot as plt
import seaborn as sns
import warnings
import secrets
import plotly as plotly
import plotly.express as px
from tqdm import tqdm
import plotly.graph_objects as go
pd.set_option('plotting.backend', 'matplotlib')
plotly.offline.init_notebook_mode()
#warnings.simplefilter(action='ignore', category=FutureWarning)
PORTFOLIO ONLY IWDA
In [2]:
TICKER="IWDA.AS"
NUMBER_OF_SIMULATIONS=1000
STARTING_CAPITAL = 10000
YEARS_OF_SIMULATION=30
In [3]:
YEARS_OF_SIMULATION=YEARS_OF_SIMULATION+1
Market_Days=253
df=yf.download(TICKER)["Adj Close"].pct_change(1).dropna()
[*********************100%%**********************] 1 of 1 completed
In [4]:
df.plot()
Out[4]:
<Axes: xlabel='Date'>
In [5]:
df
Out[5]:
Date
2009-09-28 0.000000
2009-09-29 0.000000
2009-09-30 0.000000
2009-10-01 0.000000
2009-10-02 0.000000
...
2023-11-13 0.007003
2023-11-14 0.006568
2023-11-15 0.003582
2023-11-16 -0.005737
2023-11-17 0.003590
Name: Adj Close, Length: 3624, dtype: float64
In [6]:
df_simulations=np.zeros((YEARS_OF_SIMULATION,NUMBER_OF_SIMULATIONS))
df_simulations[0,:]=STARTING_CAPITAL
for x in tqdm(range(0,NUMBER_OF_SIMULATIONS)):
for i in range(1,YEARS_OF_SIMULATION):
annual_change=1
for k in range(Market_Days):
annual_change=annual_change*(1+(secrets.choice(df.iloc[:])))
df_simulations[i,x]=annual_change*df_simulations[i-1,x]
df_simulations= pd.DataFrame(df_simulations)
df_simulations_1= pd.DataFrame(df_simulations)
0%| | 0/1000 [00:00<?, ?it/s]C:\Users\dadoi\anaconda3\Lib\random.py:374: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` 100%|██████████| 1000/1000 [03:40<00:00, 4.54it/s]
In [7]:
df_simulations_1
Out[7]:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 1.000000e+04 | ... | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 | 10000.000000 |
| 1 | 14391.081342 | 11114.594445 | 13641.291286 | 9881.361527 | 13715.146132 | 10938.456404 | 12106.250309 | 12643.757071 | 8414.515391 | 9.735893e+03 | ... | 11716.240008 | 12427.809658 | 9433.014015 | 11272.485106 | 12666.208914 | 8974.320050 | 10014.322864 | 9807.916615 | 14193.061726 | 11656.428927 |
| 2 | 16130.113737 | 10475.786251 | 16107.070491 | 10758.858329 | 10057.337867 | 9810.825993 | 14613.786036 | 11286.743381 | 8201.234776 | 1.186860e+04 | ... | 7456.187862 | 16962.159736 | 13217.642232 | 11743.502048 | 12689.933473 | 9848.893745 | 11761.756215 | 10960.041252 | 15907.350613 | 13649.305876 |
| 3 | 18517.003910 | 12808.610213 | 16419.085334 | 10998.625963 | 11015.644701 | 9410.429605 | 15738.362147 | 10385.358761 | 11313.460841 | 1.432929e+04 | ... | 7791.260736 | 16416.793010 | 14351.927263 | 12214.794132 | 14948.984609 | 7746.853485 | 13584.728811 | 12061.375163 | 25643.256510 | 11961.382544 |
| 4 | 18020.248771 | 12373.940253 | 25690.599278 | 14535.229288 | 13174.192627 | 10516.847626 | 21192.141447 | 11535.502295 | 13618.504677 | 1.591157e+04 | ... | 10504.846571 | 22042.255562 | 18545.109935 | 11979.703454 | 22830.151981 | 8204.095781 | 14708.787704 | 13504.840050 | 24095.218591 | 13827.538656 |
| 5 | 21924.624980 | 13308.248446 | 29845.095256 | 19767.589023 | 14962.417247 | 10694.591427 | 20985.420823 | 11103.251570 | 18873.428626 | 1.782794e+04 | ... | 10332.504447 | 21683.480293 | 20949.532622 | 15162.501488 | 27603.283484 | 10663.590380 | 16408.676711 | 13938.971979 | 27248.421675 | 14246.173522 |
| 6 | 21070.242327 | 12014.352130 | 34550.928466 | 25235.545180 | 17791.314170 | 14203.006616 | 18532.469790 | 10213.886808 | 21315.319722 | 2.230538e+04 | ... | 12828.101404 | 22156.033697 | 25861.429186 | 19388.423492 | 20806.145678 | 14722.081066 | 14372.685765 | 17247.445657 | 27224.419343 | 13350.295521 |
| 7 | 22604.658564 | 8389.936012 | 36663.136304 | 26417.085863 | 18576.462867 | 14271.647381 | 20430.048323 | 9830.382957 | 23980.392271 | 2.553408e+04 | ... | 12260.883188 | 28361.196000 | 28241.068225 | 22777.109031 | 24611.707381 | 21071.418346 | 17070.924706 | 20786.679115 | 28639.920657 | 18827.835298 |
| 8 | 27062.204610 | 8295.906003 | 42580.282738 | 37620.454641 | 21376.945670 | 18788.082562 | 18890.695548 | 9206.251158 | 28757.143986 | 3.866121e+04 | ... | 10429.686127 | 27479.257742 | 34130.220986 | 28010.581223 | 21142.072925 | 18250.507164 | 21392.495403 | 17290.043930 | 31412.461206 | 20054.313158 |
| 9 | 28179.805692 | 7299.430220 | 50601.139400 | 43440.134283 | 27803.360850 | 21324.046333 | 22559.149433 | 9023.938917 | 35313.850430 | 4.754991e+04 | ... | 14289.601389 | 31405.137987 | 32716.017255 | 26028.254690 | 30169.191247 | 22653.840223 | 20773.656763 | 16996.295109 | 28260.375393 | 24336.291799 |
| 10 | 34492.035383 | 10849.521907 | 53621.371071 | 43891.975494 | 28177.188733 | 28003.800019 | 23954.276565 | 9729.826587 | 44760.713631 | 4.504998e+04 | ... | 12189.513331 | 32062.563053 | 43078.267676 | 23633.821085 | 26890.746135 | 23119.209315 | 22296.577053 | 19334.549936 | 37494.133804 | 27062.647844 |
| 11 | 38401.282767 | 15521.890573 | 53012.111839 | 42935.542604 | 29269.365426 | 28793.695733 | 31421.839707 | 9392.924750 | 51441.877325 | 4.638398e+04 | ... | 8756.081204 | 44990.786904 | 54492.536564 | 22978.594954 | 34748.687403 | 18454.239384 | 28076.670171 | 25424.759143 | 35390.499022 | 43508.218262 |
| 12 | 40388.250248 | 19641.707369 | 61856.491530 | 43335.418187 | 34142.189569 | 40730.775927 | 46928.191201 | 10456.234052 | 65097.416254 | 6.318272e+04 | ... | 9616.071752 | 56549.413943 | 65904.163777 | 19948.173853 | 39283.168431 | 22493.372504 | 38426.641078 | 25043.302585 | 32945.296556 | 44312.652114 |
| 13 | 51695.118896 | 19364.686530 | 84921.127027 | 48369.247143 | 38413.031539 | 47415.210221 | 48318.893897 | 12939.764814 | 87382.921238 | 9.111321e+04 | ... | 9216.832604 | 57695.138934 | 85525.201801 | 25189.538051 | 34591.530510 | 33285.887671 | 36511.011317 | 36720.942193 | 32360.247191 | 43939.207703 |
| 14 | 70589.330354 | 21059.303153 | 111133.515039 | 53588.179071 | 57926.924621 | 62502.983768 | 62125.888018 | 16873.607263 | 101545.053398 | 1.163115e+05 | ... | 9278.522095 | 68372.863854 | 103137.428109 | 32219.828330 | 44835.747313 | 27896.539992 | 37516.321211 | 33726.036560 | 43385.200991 | 46452.522070 |
| 15 | 79767.621123 | 22874.381429 | 107204.688093 | 58403.459183 | 67008.917350 | 75452.687128 | 75952.932909 | 18998.729190 | 93228.391827 | 1.673835e+05 | ... | 11735.879794 | 70407.001920 | 124655.738733 | 31515.497218 | 61259.422974 | 36541.862042 | 42820.158655 | 40069.814222 | 37527.099798 | 57514.024914 |
| 16 | 91957.096639 | 29229.658482 | 145063.353687 | 71040.719539 | 70973.092936 | 81178.133056 | 87220.351978 | 22921.786967 | 99165.531630 | 1.585271e+05 | ... | 14404.756843 | 93072.967837 | 120277.912821 | 33741.915133 | 76642.285000 | 24284.999561 | 47082.936662 | 38817.022568 | 35698.263707 | 65680.299463 |
| 17 | 119795.695588 | 21674.359433 | 161522.012418 | 100811.592668 | 91841.700153 | 108611.499428 | 98248.105664 | 29497.010720 | 110887.738120 | 1.471038e+05 | ... | 20278.976967 | 99280.687098 | 99381.235667 | 33845.445043 | 69141.680534 | 26229.556389 | 58685.367198 | 49979.817121 | 43875.194982 | 65040.418276 |
| 18 | 165455.115254 | 28185.552612 | 159515.107179 | 118462.250298 | 128249.399225 | 149923.433388 | 120292.287227 | 34439.577367 | 120807.033938 | 1.501707e+05 | ... | 27225.377846 | 91670.949231 | 112431.748571 | 49901.582036 | 92563.303045 | 23673.418014 | 51300.184355 | 60936.032430 | 60185.907820 | 64339.162068 |
| 19 | 219592.759175 | 28505.545059 | 121528.423203 | 142297.125693 | 131944.533434 | 131515.743516 | 117401.187766 | 47550.444583 | 121732.112627 | 1.389665e+05 | ... | 33994.599100 | 116551.401968 | 122700.612029 | 41852.724307 | 92995.528816 | 24924.575850 | 48470.090780 | 65511.724822 | 75702.405200 | 67528.803462 |
| 20 | 215354.838921 | 28219.264428 | 161525.015653 | 176220.070821 | 115184.156487 | 140446.778599 | 127578.594503 | 56792.870630 | 123352.113300 | 1.371886e+05 | ... | 41132.167634 | 121131.097146 | 81429.307937 | 43973.974240 | 100653.104014 | 25572.185398 | 51868.139808 | 49191.524375 | 66483.780374 | 77704.175070 |
| 21 | 222097.947219 | 34130.026123 | 136486.399854 | 191726.555497 | 118820.378311 | 149754.667804 | 137340.061330 | 86692.365808 | 116677.582977 | 1.591051e+05 | ... | 39960.603827 | 125307.407013 | 91198.680618 | 46046.246297 | 127026.972556 | 33572.029416 | 62477.998320 | 51028.055754 | 86790.892929 | 63602.489366 |
| 22 | 194486.805097 | 28026.507454 | 138367.878628 | 254981.458065 | 156970.753256 | 187178.185051 | 136718.637420 | 99233.080738 | 134228.967187 | 1.849489e+05 | ... | 47892.603134 | 178470.185996 | 113247.138745 | 45423.164927 | 148455.740501 | 32200.375294 | 89602.024409 | 43024.600636 | 104648.235503 | 72638.594323 |
| 23 | 238926.576856 | 29081.422160 | 113415.200519 | 228501.346170 | 257753.829497 | 191781.809190 | 110540.032542 | 78852.913091 | 158565.439875 | 2.036813e+05 | ... | 56013.867722 | 192710.242704 | 101886.040897 | 52865.159515 | 167138.106877 | 33266.257217 | 113155.791874 | 42885.094504 | 114886.980383 | 66703.154711 |
| 24 | 266271.698565 | 33691.946978 | 128069.951504 | 272655.712578 | 314313.772958 | 190768.375152 | 108136.618072 | 113254.822279 | 134666.861782 | 2.709906e+05 | ... | 80136.363304 | 219371.449975 | 149103.606736 | 58354.129893 | 229208.503250 | 38996.736255 | 140369.859445 | 51566.829317 | 148600.413077 | 57137.947652 |
| 25 | 255014.759679 | 37631.301626 | 146283.594802 | 297990.906780 | 375749.883839 | 219217.345005 | 98475.841052 | 125403.598004 | 161603.970316 | 4.172211e+05 | ... | 91242.223462 | 190143.149394 | 183459.743954 | 65956.993301 | 261805.645665 | 38705.335258 | 162002.964529 | 55802.215027 | 128696.435274 | 56311.739051 |
| 26 | 333396.784268 | 39600.201361 | 190633.232682 | 285438.841073 | 397662.354085 | 237769.803644 | 134949.596355 | 127493.965833 | 177434.787392 | 4.903390e+05 | ... | 108028.930586 | 253336.377045 | 215810.338110 | 87206.691368 | 276087.244450 | 57297.461661 | 150148.561534 | 48010.018141 | 105316.111713 | 68710.743522 |
| 27 | 461894.002759 | 38454.174742 | 160094.237016 | 271785.303300 | 421831.750545 | 278397.915267 | 169785.368530 | 152785.540682 | 160008.655167 | 6.178826e+05 | ... | 115679.608378 | 210550.101001 | 235706.284998 | 91939.682945 | 367835.484835 | 60125.475841 | 146520.203596 | 48664.154358 | 93487.981795 | 82050.567542 |
| 28 | 519955.299543 | 49079.304070 | 205168.448963 | 219731.174581 | 626391.181500 | 262877.990409 | 201464.033755 | 153545.926454 | 170491.705550 | 6.644619e+05 | ... | 109002.127212 | 219900.651995 | 261699.535002 | 100031.455778 | 334494.765461 | 71894.027943 | 180102.842290 | 52401.448453 | 79995.776966 | 86038.355802 |
| 29 | 543541.917558 | 49111.938166 | 240771.324285 | 220711.115025 | 868930.756496 | 346879.143349 | 180399.410474 | 178250.103358 | 209612.759010 | 9.994884e+05 | ... | 155120.877343 | 213303.801169 | 294635.196383 | 106487.918561 | 325997.539813 | 64674.681912 | 202189.100455 | 57296.432173 | 83855.305641 | 74762.269719 |
| 30 | 418082.037737 | 60542.893262 | 356694.481971 | 239368.524153 | 707771.602070 | 302819.641690 | 207786.977976 | 184980.034036 | 211401.761116 | 1.266303e+06 | ... | 187903.730103 | 282537.960057 | 289855.930362 | 130017.711989 | 391643.060765 | 55270.776387 | 232582.694463 | 53892.873144 | 79538.480388 | 71958.752289 |
31 rows × 1000 columns
In [8]:
df_simulations=df_simulations_1
df_simulations.iloc[YEARS_OF_SIMULATION-1]
Out[8]:
0 418082.037737
1 60542.893262
2 356694.481971
3 239368.524153
4 707771.602070
...
995 55270.776387
996 232582.694463
997 53892.873144
998 79538.480388
999 71958.752289
Name: 30, Length: 1000, dtype: float64
In [9]:
quantile=df_simulations.iloc[YEARS_OF_SIMULATION-1].quantile([0.1,0.9])
quantile=list(quantile)
print(quantile)
df_simulations_purged=df_simulations[df_simulations.columns[ df_simulations.max() < quantile[1]]]
df_simulations_purged=df_simulations_purged[df_simulations_purged.columns[ df_simulations_purged.max() > quantile[0]]]
[82534.57219861187, 716018.8359028095]
In [10]:
df_simulations_purged.plot(figsize=(16,8), title=f"Simulation of {NUMBER_OF_SIMULATIONS} portfolios", legend=False)
Out[10]:
<Axes: title={'center': 'Simulation of 1000 portfolios'}>
In [11]:
df_simulations_purged.iloc[YEARS_OF_SIMULATION-1].plot.density(figsize=(16,8),fontsize=14, xlim=(-100000,900000))
Out[11]:
<Axes: ylabel='Density'>
In [12]:
top_25 =[]
low_25 =[]
median=[]
for i in range(0,YEARS_OF_SIMULATION):
top_25.append(df_simulations.iloc[i].quantile(0.75))
low_25.append(df_simulations.iloc[i].quantile(0.25))
median.append(df_simulations.iloc[i].median())
columns=["top 25%","median","bottom 25%"]
df_statistics=pd.DataFrame(list(zip(top_25,median,low_25)),columns=columns)
df_statistics
Out[12]:
| top 25% | median | bottom 25% | |
|---|---|---|---|
| 0 | 10000.000000 | 10000.000000 | 10000.000000 |
| 1 | 12354.880704 | 11132.669780 | 10043.348226 |
| 2 | 14105.925399 | 12291.949498 | 10795.809567 |
| 3 | 16512.198337 | 13671.663159 | 11512.163497 |
| 4 | 19056.137038 | 15095.071631 | 12353.001476 |
| 5 | 21350.622562 | 17131.845640 | 13451.593428 |
| 6 | 24191.801331 | 18972.385317 | 14460.734244 |
| 7 | 27745.931265 | 21180.676971 | 15614.921626 |
| 8 | 31445.274231 | 23509.018395 | 17155.876114 |
| 9 | 35734.119363 | 26313.466013 | 18498.240864 |
| 10 | 40785.619685 | 28740.347624 | 20432.190417 |
| 11 | 44747.909626 | 32141.635602 | 22441.380840 |
| 12 | 51487.323388 | 36083.786404 | 24365.684393 |
| 13 | 57306.494821 | 39810.274302 | 26554.590258 |
| 14 | 64011.837540 | 44470.241423 | 29629.746920 |
| 15 | 72237.518780 | 49240.656172 | 32302.556202 |
| 16 | 81145.671268 | 54457.817297 | 34174.041084 |
| 17 | 93683.695713 | 60669.792672 | 37961.574579 |
| 18 | 104257.767449 | 66488.957419 | 41352.408871 |
| 19 | 119520.765472 | 73723.690049 | 47127.233414 |
| 20 | 133920.057937 | 83970.718336 | 53184.041969 |
| 21 | 149220.400140 | 92801.449562 | 58504.174146 |
| 22 | 170567.736789 | 102440.150613 | 63306.247199 |
| 23 | 190970.017941 | 113259.544380 | 71265.958560 |
| 24 | 215437.738102 | 127926.802935 | 76090.161503 |
| 25 | 243712.887210 | 142154.790020 | 85166.865803 |
| 26 | 274547.838743 | 157495.467250 | 94397.425924 |
| 27 | 305669.981755 | 175556.065987 | 107032.427204 |
| 28 | 341618.033606 | 195672.680595 | 117489.588020 |
| 29 | 393481.273846 | 219848.950886 | 125568.287215 |
| 30 | 431383.713318 | 248145.966322 | 141017.982309 |
In [13]:
#ax= df_statistics.plot(legend=None,logy=False,fontsize=20,figsize=(25,15),linewidth=4,color="black",title=f"Simulation of {NUMBER_OF_SIMULATIONS} portfolios")
pd.set_option('plotting.backend', 'plotly')
fig = df_statistics.plot(width=1600, height=800,title=f"Simulation of {NUMBER_OF_SIMULATIONS} portfolios",labels= {"index": "Years to Maturity", "value":"Total Capital"} )
fig.add_trace(go.Scatter(x=list(range(0,YEARS_OF_SIMULATION)),y=np.array(top_25),fill='tonexty',mode='lines', line_color='blue' , fillcolor ="red", showlegend=False, hoverinfo="skip"))
fig.add_trace(go.Scatter(x=list(range(0,YEARS_OF_SIMULATION)),y=np.array(median),fill='tonexty',mode='lines', line_color='orange', fillcolor="green", showlegend=False, hoverinfo="skip"))
In [14]:
ls_simulations_at_profit=[]
for i in range(YEARS_OF_SIMULATION):
c=len([1 for i in list(df_simulations.iloc[i])if i > STARTING_CAPITAL])
ls_simulations_at_profit.append(c/NUMBER_OF_SIMULATIONS*100)
pd.set_option('plotting.backend', 'plotly')
df_simulations_at_profit = pd.DataFrame(ls_simulations_at_profit,columns=["Profit %"])
df_simulations_at_profit.plot(title="Minimum investment horizon", labels= {"index": "Period length in years", "value":"Chance to be in profit"})
In [14]:
In [14]:
In [15]:
TICKER="^GSPC"
In [16]:
df=yf.download(TICKER)["Adj Close"].pct_change(1).dropna()
df_simulations = np.zeros((YEARS_OF_SIMULATION, NUMBER_OF_SIMULATIONS))
df_simulations[0, :] = STARTING_CAPITAL
for x in tqdm(range(0, NUMBER_OF_SIMULATIONS)):
for i in range(1, YEARS_OF_SIMULATION):
annual_change = 1
for k in range(Market_Days):
annual_change = annual_change * (1 + (secrets.choice(df.iloc[:])))
df_simulations[i, x] = annual_change * df_simulations[i - 1, x]
df_simulations = pd.DataFrame(df_simulations)
df_simulations_1 = pd.DataFrame(df_simulations)
df_simulations = df_simulations_1
df_simulations.iloc[YEARS_OF_SIMULATION - 1]
quantile = df_simulations.iloc[YEARS_OF_SIMULATION - 1].quantile([0.1, 0.9])
quantile = list(quantile)
df_simulations_purged = df_simulations[df_simulations.columns[df_simulations.max() < quantile[1]]]
df_simulations_purged = df_simulations_purged[df_simulations_purged.columns[df_simulations_purged.max() > quantile[0]]]
top_25 =[]
low_25 =[]
median=[]
for i in range(0,YEARS_OF_SIMULATION):
top_25.append(df_simulations.iloc[i].quantile(0.75))
low_25.append(df_simulations.iloc[i].quantile(0.25))
median.append(df_simulations.iloc[i].median())
columns=["top 25%","median","bottom 25%"]
df_statistics=pd.DataFrame(list(zip(top_25,median,low_25)),columns=columns)
pd.set_option('plotting.backend', 'plotly')
fig = df_statistics.plot(width=1600, height=800,title=f"Simulation of {NUMBER_OF_SIMULATIONS} portfolios",labels= {"index": "Years to Maturity", "value":"Total Capital"} )
fig.add_trace(go.Scatter(x=list(range(0,YEARS_OF_SIMULATION)),y=np.array(top_25),fill='tonexty',mode='lines', line_color='blue' , fillcolor ="red", showlegend=False, hoverinfo="skip"))
fig.add_trace(go.Scatter(x=list(range(0,YEARS_OF_SIMULATION)),y=np.array(median),fill='tonexty',mode='lines', line_color='orange', fillcolor="green", showlegend=False, hoverinfo="skip"))
[*********************100%%**********************] 1 of 1 completed
0%| | 0/1000 [00:00<?, ?it/s]C:\Users\dadoi\anaconda3\Lib\random.py:374: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]` 100%|██████████| 1000/1000 [03:45<00:00, 4.44it/s]
In [17]:
ls_simulations_at_profit = []
for i in range(YEARS_OF_SIMULATION):
c = len([1 for i in list(df_simulations.iloc[i]) if i > STARTING_CAPITAL])
ls_simulations_at_profit.append(c / NUMBER_OF_SIMULATIONS * 100)
pd.set_option('plotting.backend', 'plotly')
df_simulations_at_profit = pd.DataFrame(ls_simulations_at_profit, columns=["Profit %"])
df_simulations_at_profit.plot(title="Minimum investment horizon",
labels={"index": "Period length in years", "value": "Chance to be in profit"})
In [ ]:
In [18]:
!jupyter nbconvert --execute --to html Portfolio1.ipynb --HTMLExporter.theme=dark
[NbConvertApp] Converting notebook Portfolio1.ipynb to html 0.00s - Debugger warning: It seems that frozen modules are being used, which may 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off 0.00s - to python to disable frozen modules. 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation. 0.00s - Debugger warning: It seems that frozen modules are being used, which may 0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off 0.00s - to python to disable frozen modules. 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation. [NbConvertApp] WARNING | Alternative text is missing on 3 image(s). [NbConvertApp] Writing 4927937 bytes to Portfolio1.html
In [ ]: